#ifndef __UTTP_BEHAVIOUR_TESTCASE__
#define __UTTP_BEHAVIOUR_TESTCASE__

#include "ModuleInterface.h"

/**
 * trieda, predstavuje zakladny Test, 
 * vsetky konkretne testy musia byt od tejto
 * triedy oddedene
 */
class UttpBehaviourTestCase : public ModuleInterface
{

protected:
	//premenna, ktora urcuje ci bol test uspesny
	bool isTestSuccess;
	//premenna, ktora urcuje ci je uz dokoncena inicializacia testu
	bool isTestInitialized;
	//premenna, ktora urcuje ci sa uz testovanie skoncilo -> metoda RunPlayOnTest
	bool isTestFinished;
	//premenna, ktora urcuje ci sa vykonalo co sa malo po teste
	bool isTestCleanedUp;
	//premenna, ktora urcuje ci moze cely test skoncit, a tedas si sa vykonal test
	bool isRunTestDone;
	//premena pocita kolkymi cyklami presiel test
	int cyclesCount;

public:
	virtual bool PrepareBeforeTest(); 
	virtual bool Test();
	virtual bool CleanUpTest();
	virtual void OnTestFailed();
	virtual void OnTestPassed();
	
	bool RunTest(int maxCyclesCount);
	bool GetIsTestSuccess();
	void SetIsTestSuccess(bool result);

	UttpBehaviourTestCase() 
	{
		cyclesCount = 0;
		isTestInitialized = false;
		isTestFinished = false;
		isTestCleanedUp = false;
		isRunTestDone = false;
	}
};

#endif
